package Stream;

import java.util.stream.Stream;

/**
 * @projectName: Webflux_demo
 * @package: Stream
 * @className: StreamAPITest
 * @author: 冷环渊 doomwatcher
 * @description: TODO
 * @date: 2021/12/13 20:09
 * @version: 1.0
 */
public class StreamAPITest {
    public static void main(String[] args) {
        String[] strarr = {"bo_le", "", "webfulx", "redis", "spring", "mirc_Sercice"};
        // 数组 arr 创建 Stream
        //Arrays.stream(strarr).forEach(System.out::println);

        //2.list
        //Arrays.asList(strarr).stream().forEach(System.out::println);

        //3.stream.of()
        //Stream.of(strarr).forEach(System.out::println);

        //    4.迭代器 打印 1-10 元素
        //Stream.iterate(1, i -> i + 1).limit(10).forEach(System.out::println);

        //    5. generate 打印随机数 10以内的随机数
        //Stream.generate(() -> new Random().nextInt(10)).limit(10).forEach(System.out::println);

        /*
         *  现实中的流 变成 完整案例
         *  元素的中间操作，元素的终止操作
         *  结果依次 输出 abceo
         *
         * 结果 一次输出 belo
         * bo_le --> bole ->字符转换成一个新的流（b o l e）-> sorted->(belo);
         *
         *  PS: 注意事项 在流编程中 终止操作只能有一个，中间操作可以有 0-n个
         * */
        String[] arr = {"react", "", "spring", "bo_le", "bo_le"};
        Stream.of(arr)
                .filter(i -> !i.isEmpty())
                .distinct()
                .sorted()
                .limit(1)
                .map(i -> i.replace("_", ""))
                .flatMap(i -> Stream.of(i.split("")))
                .sorted()
                .forEach(System.out::println);

    }
}
